#pragma once
#include"global.h"
#include<unordered_map>
#include<string>
#include<memory>
#include<vector>
using namespace std;
class FDR
{
private:
	static unordered_map<int,string> _Dic;
	static string _Run(int size);
	static unique_ptr<string> _Code(const string& data);
	//static string _Reorder(const vector<string>& data);
	static int _Cost(const string& str1,const string& str2);
public:
	FDR(void);
	~FDR(void);
	//vectors reorder and difference TSP
	static string reorder(const vector<string>& data);
	//scan chain reorder TSP
	static string reorder2(const vector<string>& data);
	static string reorder_GA(const vector<string>& data);
	static unique_ptr<string> code(const string& data);
	static unique_ptr<string> code_xor(const string& data);//11101000->10011100
	static unique_ptr<string> code_ghost(const string& data);
};

